﻿using System;

namespace DimensionsHelper.Common.Metadata.Script;

/// <summary>
///     Categorical类型常数的元素表达式。
/// </summary>
public class CategoryExpression : LiteralExpression
{
    /// <summary>
    ///     Categorical类型常数的元素表达式。
    /// </summary>
    public CategoryExpression(int start) : base(LiteralKinds.Category, start)
    {
    }

    /// <summary>
    ///     分类元素的分类值的上限。
    /// </summary>
    public Identifier? UpperBoundary { get; internal set; }

    /// <summary>
    ///     分类元素的分类值下限。
    /// </summary>
    public Identifier? LowerBoundary { get; internal set; }

    /// <summary>
    ///     是否带有尖号 ^ 。
    /// </summary>
    public bool Caret { get; internal set; }


    /// <summary>
    ///     分类元素使用的整数值。配置了此属性时，<see cref="UpperBoundary" />和<see cref="LowerBoundary" />将被忽略，
    ///     <see cref="Caret" />将失效。
    /// </summary>
    public IntegerExpression? Value { get; internal set; }


    // 不实现此方法
    public override ExpressionBasicType Evaluate()
    {
        throw new NotSupportedException();
    }
}